#ifndef __STATISTICS_DOT_H_4MTX2DAG__
#define __STATISTICS_DOT_H_4MTX2DAG__
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <assert.h>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <map>
#include <string>
#include <vector>
#include <ostream>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <Types.h>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class ArrStatistics {
public:
   U32 numElems;
   U32 numBytes;
   
   void WriteToFile( FILE * FH ) const;
};
class DagStatistics {
public:
   
   std::vector< U32 > virtNodes; // virtual nodes
   std::vector< U32 > vpceNodes; // virtual nodes, path compacted
   std::vector< U32 > upcxNodes; // unique nodes, (path expanded)
   std::vector< U32 > uniqNodes; // unique nodes
   U32 deg;
   U32 nnzLeafElems;
   U32 totLeafElems;
   U32 leafUniqElems;
   U32 leafVirtNodes;
   U32 leafUniqNodes;
   U32 totalNumNodes;
   double leafSize;
   
   U32 TotalNodeCount( void ) const;
   
   void Audit( void ) const;
   void WriteToFile( FILE * FH ) const;
};
std::ostream & operator << ( std::ostream & os, const DagStatistics & ds );
#endif
